package com.jabm.cmaq.negocio.impl;

import java.util.List;

import com.jabm.cmaq.dao.CMaqUsuariosAccesoDAO;
import com.jabm.cmaq.dao.CMaqUsuariosDAO;
import com.jabm.cmaq.modelo.CMaqUsuarios;
import com.jabm.cmaq.modelo.CMaqUsuariosAcceso;
import com.jabm.cmaq.negocio.interfaces.ICMaqUsuariosManager;

/**
 *  Capa de gestion para la entidad de CMaqUsuarios.
 *  Copyright: Copyright (c) 2014
 *  Company:
 *  @author jabastias
 *  @version 1.0
 */
public class CMaqUsuariosManagerImpl implements ICMaqUsuariosManager{
	
    /**
     * DAO para la realizacion de las operciones CRUD sobre CMaqUsuarios.java
     */
	private CMaqUsuariosDAO iUsuarioDAO;
	
	
	/**
	 * DAO para gestionar el acceso de usuarios.
	 */
	private CMaqUsuariosAccesoDAO iUsuarioAccesoDAO;
	
	/* (non-Javadoc)
	 * @see com.jabm.cmaq.negocio.interfaces.ICMaqUsuariosManager#insertarUsuario(com.jabm.cmaq.modelo.CMaqUsuarios)
	 */
	public void insertarUsuarios(CMaqUsuarios Usuario) {
		iUsuarioDAO.insertar(Usuario);
	}

	/* (non-Javadoc)
	 * @see com.jabm.cmaq.negocio.interfaces.ICMaqUsuariosManager#modificarUsuario(com.jabm.cmaq.modelo.CMaqUsuarios)
	 */
	public void modificarUsuario(CMaqUsuarios Usuario) {
		iUsuarioDAO.modificar(Usuario);
	}

	/* (non-Javadoc)
	 * @see com.jabm.cmaq.negocio.interfaces.ICMaqUsuariosManager#borrarUsuario(com.jabm.cmaq.modelo.CMaqUsuarios)
	 */
	public void borrarUsuario(CMaqUsuarios Usuario) {
		iUsuarioDAO.borrar(Usuario);
	}

	/* (non-Javadoc)
	 * @see com.jabm.cmaq.negocio.interfaces.ICMaqUsuariosManager#buscarUsuario(int)
	 */
	public CMaqUsuarios buscarUsuario(int id) {
		return iUsuarioDAO.buscar(id);
	}

	/* (non-Javadoc)
	 * @see com.jabm.cmaq.negocio.interfaces.ICMaqUsuariosManager#listarTodosUsuarios()
	 */
	public List<CMaqUsuarios> listarTodosUsuarios() {
		return iUsuarioDAO.listarTodos();
	}

	/* (non-Javadoc)
	 * @see com.jabm.cmaq.negocio.interfaces.ICMaqUsuariosManager#filtrar(com.jabm.cmaq.modelo.CMaqUsuarios)
	 */
	public List<CMaqUsuarios> filtrar(CMaqUsuarios usuario){
		
		//Se genera la sql
		String sql = "from " + CMaqUsuarios.class.getName() + " us where 1=1";
		
		if(usuario.getName()!= 0) {
			sql = sql + " and us.name = '"+usuario.getName()+"'";
		}
		
		if(usuario.getNameEmployee() != null 
				&& !usuario.getNameEmployee().equals("")){
			sql = sql + " and us.nameEmployee = '"+usuario.getNameEmployee()+"'";
		}
		
		if(usuario.getLastName() != null 
				&& !usuario.getLastName().equals("")){
			sql = sql + " and us.lastName = '"+usuario.getLastName()+"'";
		}
		
		if(usuario.getCompanyCode() != null 
				&& !usuario.getCompanyCode().equals("")){
			sql = sql + " and us.companyCode = '"+usuario.getCompanyCode()+"'";

		}
		
		if(usuario.getEmployeeCode() != null 
				&& !usuario.getEmployeeCode().equals("")){
			sql = sql + " and us.employeeCode = '"+usuario.getEmployeeCode()+"'";

		}
		
		if(usuario.getAccesoPerfiles() != null 
				&& !usuario.getAccesoPerfiles().equals("")){
			sql = sql + " and us.accesoPerfiles = '"+usuario.getAccesoPerfiles()+"'";

		}
		
		
		return iUsuarioDAO.filtrar(sql);
	}
	
	/**
	 * Busqueda de usuario por nombre en el acceso por spring security
	 * @param username
	 * @return
	 */
	public CMaqUsuariosAcceso findByUserName(String username) {
	
		return iUsuarioAccesoDAO.findByUserName(username);
	}
	
	/**
	 * @return the iUsuarioDAO
	 */
	public CMaqUsuariosDAO getiUsuarioDAO() {
		return iUsuarioDAO;
	}

	/**
	 * @param iUsuarioDAO the iUsuarioDAO to set
	 */
	public void setiUsuarioDAO(CMaqUsuariosDAO iUsuarioDAO) {
		this.iUsuarioDAO = iUsuarioDAO;
	}

	/**
	 * @return the iUsuarioAccesoDAO
	 */
	public CMaqUsuariosAccesoDAO getiUsuarioAccesoDAO() {
		return iUsuarioAccesoDAO;
	}

	/**
	 * @param iUsuarioAccesoDAO the iUsuarioAccesoDAO to set
	 */
	public void setiUsuarioAccesoDAO(CMaqUsuariosAccesoDAO iUsuarioAccesoDAO) {
		this.iUsuarioAccesoDAO = iUsuarioAccesoDAO;
	}

	
}
